const app = getApp();

Page({
  data: {
    loading: false,
    redirectUrl: ''
  },

  onLoad(options) {
    // 检查是否已经登录
    const token = wx.getStorageSync('token');
    if (token) {
      this.navigateBack();
      return;
    }

    // 保存重定向URL
    if (options.redirect) {
      this.setData({
        redirectUrl: decodeURIComponent(options.redirect)
      });
    }
  },

  navigateBack() {
    const redirectUrl = this.data.redirectUrl;
    if (redirectUrl) {
      wx.redirectTo({
        url: redirectUrl
      });
      return;
    }

    const pages = getCurrentPages();
    if (pages.length > 1) {
      wx.navigateBack();
    } else {
      wx.switchTab({
        url: '/pages/index/index'
      });
    }
  },

  async handleLogin() {
    if (this.data.loading) return;

    // 先获取用户信息
    wx.getUserProfile({
      desc: '用于完善会员资料',
      success: async (userInfo) => {
        console.log('获取到的用户信息：', userInfo);
        this.setData({ loading: true });

        try {
          // 获取微信登录code
          const loginResult = await wx.login();
          if (!loginResult || !loginResult.code) {
            throw new Error('获取微信登录凭证失败');
          }

          const code = loginResult.code;
          console.log('微信登录code：', code);

          // 调用后端登录接口
          const loginRes = await app.request({
            url: '/user/wx_login/',
            method: 'POST',
            data: { code }
          });

          console.log('登录结果：', loginRes);

          if (loginRes.data.token) {
            // 登录成功，保存token
            wx.setStorageSync('token', loginRes.data.token);
            // 保存用户信息
            wx.setStorageSync('userInfo', loginRes.data.user);

            wx.showToast({
              title: '登录成功',
              icon: 'success'
            });

            this.navigateBack();
          } else if (loginRes.data.openid) {
            // 用户未注册，跳转到注册页面
            const params = {
              openid: loginRes.data.openid,
              avatar: encodeURIComponent(userInfo.userInfo.avatarUrl),
              nickname: encodeURIComponent(userInfo.userInfo.nickName)
            };

            console.log('跳转注册页面参数：', params);

            const url = `/pages/register/register?openid=${params.openid}&avatar=${params.avatar}&nickname=${params.nickname}`;
            console.log('完整跳转URL：', url);

            wx.redirectTo({ url });
          }
        } catch (error) {
          console.error('登录失败：', error);
          // 更详细的错误日志
          if (error.data) {
            console.error('错误详情：', error.data);
          }

          let errorMsg = '登录失败';
          if (error.message) {
            errorMsg = error.message;
          } else if (error.data && error.data.message) {
            errorMsg = error.data.message;
          }

          wx.showToast({
            title: errorMsg,
            icon: 'none',
            duration: 3000
          });
        } finally {
          this.setData({ loading: false });
        }
      },
      fail: (err) => {
        console.error('获取用户信息失败：', err);
        wx.showToast({
          title: '需要您授权才能继续使用',
          icon: 'none'
        });
      }
    });
  }
});